package com.hejing.enum枚举类.认识enum枚举类;

/**
 * ClassName: SeasonEnumTest02
 * Package: com.hejing.enum枚举类
 * Description:
 *
 * @Author: HeJing
 * @Create: 2023-04-03 21:08
 * @Version: 1.0
 */
public class SeasonEnumTest02 {
    public static void main(String[] args) {
        Season02[] values = Season02.values();
        for (int i = 0; i < values.length; i++) {
            values[i].show();
        }
    }
}

// 枚举类实现接口:
interface Info02{
    void show();
}


// jdk5.0中使用关键字enum定义枚举类.
enum Season02 implements Info02{

    // 1、必须在枚举类的开头声明多个对象，对象之间使用,隔开。
    // 枚举类实现接口，让枚举类的每一个枚举对象重写接口中的方法，当通过不同的枚举类对象调用此方法时，执行的各自重写的方法。
    SPRING("春天", "春暖花开"){
        public void show(){
            System.out.println("春天在哪里");
        }
    },
    SUMMER("夏天", "夏日炎炎"){
        public void show(){
            System.out.println("宁静的夏天");
        }
    },
    AUTUMN("秋天", "秋高气爽"){
        public void show() {
            System.out.println("秋意浓");
        }
    },
    WINTER("冬天", "雪花飘飘"){
        public void show() {
            System.out.println("大约在冬季");
        }
    };

    // 2、声明当前类的对象的实例变量:
    private final String seasonName;  // 季节的名称,不对外提供修改功能(final)
    private final String seasonDesc;  // 季节的描述，不对外提供修改功能(final)

    // 3、构造器私有:
    private Season02(String seasonName, String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    // 3、提供实例变量的get方法

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }



    @Override
    public String toString() {
        return "Season02{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}























